package com.bowen.spike.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {

    /**
     * 创建并配置MyBatis-Plus拦截器Bean
     *
     * <p>该方法用于配置MyBatis-Plus的核心拦截器链，包含以下功能插件：
     * 1. 分页插件（PaginationInnerInterceptor）：提供物理分页支持
     * 2. 乐观锁插件（OptimisticLockerInnerInterceptor）：实现版本号乐观锁机制
     *
     * @return MybatisPlusInterceptor 配置完成的拦截器实例，将被Spring容器管理
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();

        // 添加分页功能插件（需配合Page对象使用）
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());

        // 添加乐观锁功能插件（需配合@Version注解使用）
        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());

        return mybatisPlusInterceptor;
    }


}
